以前,拿到一个closable资源后,如果对它操作,都要先用try包起来,最后一定要在finally里面关掉:

Closable resource = xxx; //此处为得到这个resource的逻辑
try {
	// 处理逻辑
} finally {
	if (resource != null) {
		try {
			resource.close();
	}
}

自从Java 7之后,根据官方文档tryResouceClose,任何实现了java.lang.AutoClosable,以及java.io.Closable接口的对象都可以在这段代码结束之后被关掉:

try (Closable resource = xxx) {
	// 处理逻辑
}

.NET里面也有个类似的用法,C#里面一般实现了IDisposable接口的对象在使用时最好结束后调用它的dispose方法,也可以使用using的方式来帮助回收:

using (IDisposable resource = xxx) {
	// 处理逻辑
}